home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 39
/
Aminet 39 (2000)(Schatztruhe)[!][Oct 2000].iso
/
Aminet
/
biz
/
swood
/
FW_AllInOne.lha
/
Makros
/
DBImport.long
< prev
next >
Wrap
Text File
|
1998-01-17
|
20KB
|
686 lines
/*DBImport - Import der Datenbank-Export-Dateien in FW-Tabellen */
/* rechte Ausrichtung verbessert
schnellere Datenausgabe, durch "nur Schreiben wenn Feld Text enthält"
*/
Parse ARG FW
if ~show('L',"rexxreqtools.library") then
if ~addlib('rexxreqtools.library',0,-30,0) then do
ShowMessage 1 1 '"Fehler...." "Benötige Libs:rexxreqtools.library" " A B B R U C H ! !" "Okay" "" ""'
exit
end
IF ~show('L','tritonrexx.library') then
IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN DO
ShowMessage 2 1 '"Fehler...." "Benötige Libs:tritonrexx.library" "" "Abbruch" "" ""'
exit
END
R='0A'X
SIGNAL ON SYNTAX
If FW='' then do
Address='FinalW'
Options results
STATUS PORTNAME
FW = result
End
address(FW)
CtrlUp
ShiftUp
AltUp
address "REXX"
If open('Hilfe',"S:FW_Paket.prefs","R") then do /* Hilfe-Verzeichnis */
HilfeVerz=readln('Hilfe')
Call Close('Hilfe')
End
else HilfeVerz=''
If ~exists("s:FW_DBImport.prefs") then do
Ausrichtung=1
TBreite=1
Editbreite=17
Staerke=1
Zbeschriftung=1
sTrennung=","
Aufteilen=0
end
else do
Call Open("prefs","S:FW_DBImport.prefs","R")
Ausrichtung =readln("prefs")
TBreite =readln("prefs")
Editbreite =readln("prefs")
Staerke =readln("prefs")
Zbeschriftung=readln("prefs")
Trennung =readln("prefs")
Aufteilen =readln("prefs")
Call Close("prefs")
end
EditBreiteOrig=EditBreite
Zbeschriftung.0=4
Zbeschriftung.1="nein"
Zbeschriftung.2="nur 1.Zeile"
Zbeschriftung.3="nur 1.Spalte"
Zbeschriftung.4="1.Zeile & 1.Spalte"
TBreite.0=2
TBreite.1="automatisch"
TBreite.2="manuell"
Ausrichtung.0=3
Ausrichtung.1="links"
Ausrichtung.2="zentriert"
Ausrichtung.3="rechts"
Staerke.0=11
Staerke.1="belassen"
Staerke.2="nein"
Staerke.3="Haarlinie"
Staerke.4=".5 Punkt"
Staerke.5="1 Punkt"
Staerke.6="2 Punkt"
Staerke.7="4 Punkt"
Staerke.8="6 Punkt"
Staerke.9="8 Punkt"
Staerke.10="10 Punkt"
Staerke.11="12 Punkt"
If Aufteilen=0 then AufteilText="Nein"
else AufteilText="Ja"
o0="Layout der Tabelle:"
o1="Datentrennung: "||Trennung||", Tabelle aufteilen: "||AufteilText
o2="Ausrichtung: "||Ausrichtung.Ausrichtung||", Breite: "||Editbreite||" cm"
o3="Umrahmung: "||Staerke.Staerke||", Beschriftung: "||Zbeschriftung.Zbeschriftung
apptags = 'TRCA_Name DBImport',
'TRCA_LongName "DatabaseImport"',
'TRCA_Info "für FinalWriter"',
'TRCA_Version "1.0 registered"',
'TRCA_Release "1"',
'TRCA_Date "14.01.98"',
'TAG_END'
/*******************************************************************************
** Aufbau der GUI
*******************************************************************************/
windowtags = WindowID(1),
WindowPosition('TRWP_CENTERDISPLAY'),
WindowFlags('TRWF_NOMINTEXTWIDTH'),
PubScreenName('FinalWriterPubScreen'),
WindowTitle("Datenbank-Import"),
BeginMenu('Projekt'),
MenuItem('Voreinsteller...',102),
'ItemBarlabel',
MenuItem('Q_Verlassen',104),
BeginMenu('?'),
MenuItem('?_Info',101),
MenuItem('H_Hilfe',103),
'HorizGroupAC SpaceS',
'VertGroupAC SpaceS',
'HorizSeparator',
'SpaceS',
TextH(o1) 'TRAT_ID 6',
'SpaceS',
TextN(o0),
TextH(o2) 'TRAT_ID 7',
TextH(o3) 'TRAT_ID 8',
'SpaceS',
'HorizSeparator',
'Space',
'HorizgroupEC',
Button('_Anwenden',1),
'SpaceS',
Button('Ab_bruch',2),
'EndGroup SpaceS',
'EndGroup SpaceS',
'EndGroup SpaceS',
'EndProject'
app = TR_CREATEAPP('TRCA_Name DBImport')
/*******************************************************************************
** Abfrage der GUI
*******************************************************************************/
IF app ~= '00000000'x THEN DO
window1 = TR_OPENPROJECT(app,windowtags)
IF window1 ~= '00000000'x THEN DO
ende = 0
DO WHILE ~ende
CALL TR_WAIT(app,'')
DO WHILE TR_HANDLEMSG(app,'event')
IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN ende=1
IF event.trm_class = 'TRMS_ACTION' THEN DO
SELECT
WHEN event.trm_id = 1 THEN Call program /*starten*/
WHEN event.trm_id = 2 THEN ende=1 /*ende*/
WHEN event.trm_id = 101 THEN Call rtezrequest("Aus dem Makro-Paket:"||R||R||"Datenbank-Import V1.0 für FW"||R||"© 1998 Heiko Schröder","Danke für Ihre Registrierung.","Info","rt_pubscrname=FinalWriterPubScreen")
WHEN event.trm_id = 102 THEN Call Voreinstellung
WHEN event.trm_id = 103 THEN address command "run Multiview PUBSCREEN=FinalWriterPubScreen "||d2c(34)||HilfeVerz||"DBImport.guide"||d2c(34)
WHEN event.trm_id = 104 THEN ende=1
OTHERWISE NOP
END
END
END
END
CALL TR_CLOSEPROJECT(window1)
END
CALL TR_DELETEAPP(app)
END
ELSE
CALL quit('Kann das Fenster nicht öffnen',10)
Exit
Program:
address "REXX"
verz=GetClip(DBImportVerz)
If verz~="" then do
pos = max(index(verz,':'),lastpos('/',verz))
IF (pos ~=0) then verz = LEFT(verz, pos)
END
dbank = rtfilerequest(verz,,"Wähle die Exportdatei aus...",,"rt_pubscrname=FinalWriterPubScreen rtfi_matchpat=#?")
IF dbank = "" then return
SetClip(DBImportVerz,dbank)
IF ~OPEN('DB', dbank, "R") THEN Return
a=1
If pos("d2c(",Trennung)~=0 then do
u=pos("d2c(",Trennung)
Trennung=Delstr(Trennung,1,u+3)
u=pos(")",Trennung)
Trennung=Left(Trennung,1,u-1)
say Trennung
Trennung=d2c(Trennung)
End
Do ForEver
line.a=readln("DB")
If EOF("DB") Then leave
line.a=line.a||Trennung
a=a+1
End
line.0=a-1
Call Close("DB")
a=0; elemente=0
Do ForEver
a=pos(Trennung,line.1,a+1)
If a=0 then leave
elemente=elemente+1
End
address(FW)
GetDocItemPrefs Decimal
Punkt=Result
If Punkt="Comma" then DocItemPrefs Decimal Period
Zeile=0; Spalte=0
Select
When ZBeschriftung=2 then do
Zeile=1; line.0=line.0+1
End
When Zbeschriftung=3 then do
Spalte=1; elemente=elemente+1
End
When ZBeschriftung=4 then do
Spalte=1; Zeile=1; elemente=elemente+1; line.0=line.0+1
End
Otherwise NOP
End
Status Page
Seite=result
Status ScrollPos
PosTop=Word(result,2)-0.3
Numeric Digits 2
ZellenBreite=EditBreite/elemente
If Zellenbreite<0.64 then do
ShowMessage 1 1 '"Diese Datenbank kann leider nicht importiert werden!"
"Durch die 'elemente' Spalten, ergibt sich eine Zellenbreite"
"von 'Zellenbreite'cm. Sie muß aber min. 0.64cm betragen."
"Achso" "" ""'
ShowMessage 1 1 '"Um diese Datenbank trotzdem importieren zu können,"
"vergrößern Sie bitte den Editierbereich. Oder verändern"
"Sie die Breite der Tabelle (derzeit: 'EditBreite' cm)."
"Okay" "" ""'
return
End
Numeric Digits 4
GetPageSetup Width
PageBreite=result
GetSectionSetup Inside OutSide
DS=result
Status View
Zoom=result
GetDisplayPrefs HORIZONTAL
Parse Var result HORI
Status Window
Parse Var result . . Weite .
Weite=Weite-20
SWeite=PageBreite
/*Breite*/
erg=Weite/SWeite*2.54
Diff=HORI/erg
SZoom=100/Diff%5*5
If SZoom<20 then SZoom=20
View SZoom
Select
When Ausrichtung=1 then PosLeft=Word(DS,1)-0.3 /*links*/
When Ausrichtung=2 then do
Verschiebung=(EditBreiteOrig-EditBreite)/2 /*zentriert*/
PosLeft=Word(DS,1)-0.3+Verschiebung
End
When Ausrichtung=3 then do /*rechts*/
Verschiebung=EditBreiteOrig-EditBreite
PosLeft=Word(DS,1)-0.8+Verschiebung
End
Otherwise PosLeft=Word(DS,1)-0.3 /*volle Breite*/
End
If Staerke~=1 then do
Select
When Staerke=2 then Rahmen="None"
When Staerke=3 then Rahmen="HairLine"
When Staerke=4 then Rahmen="0.5"
When Staerke=5 then Rahmen="1"
When Staerke=6 then Rahmen="2"
When Staerke=7 then Rahmen="4"
When Staerke=8 then Rahmen="6"
When Staerke=9 then Rahmen="8"
When Staerke=10 then Rahmen="10"
When Staerke=11 then Rahmen="12"
Otherwise NOP
End
TablePrefsLine Exterior LineWt Rahmen
TablePrefsLine Interior LineWt Rahmen
TablePrefsLine FirstRow LineWt Rahmen
TablePrefsLine LastRow LineWt Rahmen
TablePrefsLine FirstCol LineWt Rahmen
TablePrefsLine LastCol LineWt Rahmen
End
If Aufteilen=1 then do
result="ß"
RequestText '"Die Datei beinhaltet 'line.0' Zeilen." "Geben Sie die Zeilen pro Seite an..." ""'
If (result~="ß" & result~="") then ZproSeite=result
else ZproSeite=line.0
end
else ZproSeite=line.0
If Spalte=0 Then SAnf=0
Else SAnf=1
If Zeile=0 Then ZAnf=0
Else ZAnf=1
j=0; ges=0
Do ForEver
TablePrefs ROWS ZproSeite COLUMNS elemente COLUMNWIDTH Zellenbreite
CreateTable Seite+j PosLeft PosTop
Redraw
u=j+1
CurrentObject
TabelleID.u=result
i=0
Do ForEver
i=i+1; ges=ges+1
ColZelle=1
Do ForEver
a=pos(Trennung,line.ges)
If a=0 then Leave
AnfPos1=pos(d2c(34),line.ges)
If AnfPos1=0 then Zelle=Left(line.ges,a-1) /* kein "" */
Else do
Komma =pos(Trennung,line.ges,AnfPos1)
AnfPos2=LastPos(d2c(34),line.ges,Komma)
Zelle =Left(line.ges,AnfPos2-1)
Zelle=Delstr(Zelle,1,AnfPos1)
End
if (i+ZAnf)//(ZproSeite+1)=0 then leave
If Zelle~="" then do
TableSetActiveCell i+ZAnf ColZelle+SAnf
Type Zelle
End
ColZelle=ColZelle+1
line.ges=Delstr(line.ges,1,a)
End
if (i+ZAnf)//ZproSeite=0 then leave
End
If (ges+Zanf)>=line.0 then leave
j=j+1
TextTool; InsertPageBreak
End
Redraw
TabelleID.0=u
If Zeile=1 then o=2
else o=1
If Spalte=1 then
Do p=1 to TabelleID.0
Do a=o to ZproSeite
SelectObject TabelleID.p
TableSetActiveCell a 1
result="ß"
RequestText '"Zeilen beschriften" "'a'.Zeile" ""'
If result='ß' then Text=""
Else Text=result
If Text~="" then Type Text
Redraw
End
End
If Zeile=1 then
Do a=1 to elemente
SelectObject TabelleID.1
TableSetActiveCell 1 a
result="ß"
RequestText '"Spalten beschriften" "'a'.Spalte" ""'
If result='ß' then Text=""
Else Text=result
If Text~="" then do
Type Text
Do u=2 to TabelleID.0
SelectObject TabelleID.u
TableSetActiveCell 1 a
If Text~="" then Type Text
Type Text
End
Redraw
End
End
View Zoom
If Punkt="Comma" then DocItemPrefs Decimal Comma
Return
Voreinstellung:
If TBreite=2 then Disi=0
else Disi=1
/*address(FW)
Call TabBreitenkontrolle*/
windowtags = WindowID(2),
WindowPosition('TRWP_CENTERDISPLAY'),
WindowFlags('TRWF_NOMINTEXTWIDTH'),
PubScreenName('FinalWriterPubScreen'),
WindowTitle('Datenbank-Import-Voreinsteller'),
'HorizGroupAC SpaceS',
'VertGroupA SpaceS',
'HorizGroupAC',
TextID('_Datentrennung:',3),
'SpaceS',
StringGadget(Trennung,3),
'EndGroup',
'SpaceS',
'HorizGroupAC',
TextID('Tabelle auftei_len:',9),
'SpaceS',
CheckBox(9) 'TRAT_VALUE' Aufteilen,
'EndGroup',
'HorizGroupAC',
TextID('Tabellenaus_richtung:',6),
'SpaceS',
CycleGadget('Ausrichtung',Ausrichtung-1,6) 'TRAT_Flags TRCY_RIGHTLABELS',
'EndGroup',
'HorizGroupAC',
TextID('Tabellenbrei_te:',7),
'SpaceS',
CycleGadget('TBreite',TBreite-1,7) 'TRAT_Flags TRCY_RIGHTLABELS',
'EndGroup',
'HorizGroupAC',
TextN(' '),
'SpaceS',
StringGadget(Editbreite,4) 'Trat_Disabled' Disi,
'SpaceS',
TextN('cm'),
'EndGroup',
'SpaceS',
'HorizGroupAC',
TextID('Zellen_umrahmung:',5),
'SpaceS',
CycleGadget('Staerke',Staerke-1,5) 'TRAT_Flags TRCY_RIGHTLABELS',
'EndGroup',
'HorizGroupAC',
TextID('_Zellenbeschriftung:',8),
'SpaceS',
CycleGadget('Zbeschriftung',Zbeschriftung-1,8) 'TRAT_Flags TRCY_RIGHTLABELS',
'EndGroup',
'SpaceS',
'HorizSeparator',
'SpaceS',
'HorizGroupEC',
Button('_Sichern',15),
'SpaceS',
Button('_Anwenden',10),
'SpaceS',
Button('Ab_bruch',20),
'EndGroup SpaceS',
'EndGroup SpaceS',
'EndGroup SpaceS',
'EndProject'
app2 = TR_CREATEAPP('TRCA_Name DBImport2')
oldAusrichtung=Ausrichtung
oldTBreite=TBreite
oldStaerke=Staerke
oldZbeschriftung=Zbeschriftung
oldEditbreite=Editbreite
oldAufteilen=Aufteilen
IF app2 ~= '00000000'x THEN DO
window2 = TR_OPENPROJECT(app2,windowtags)
IF window2 ~= '00000000'x THEN DO
ende2 = 0
DO WHILE ~ende2
CALL TR_WAIT(app2,'')
DO WHILE TR_HANDLEMSG(app2,'event')
IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN ende2 = 1
IF event.trm_class = 'TRMS_NEWVALUE' THEN DO
SELECT
WHEN event.trm_id = 6 THEN Ausrichtung=event.trm_data+1
WHEN event.trm_id = 7 THEN do
TBreite=event.trm_data+1
Call TabBreitenkontrolle
Call TR_SetAttribute(window2,4,'TROB_STRING',EditBreite)
Call TR_SetAttribute(window2,4,'TRAT_Disabled',Disi)
End
WHEN event.trm_id = 5 THEN Staerke=event.trm_data+1
WHEN event.trm_id = 8 THEN Zbeschriftung=event.trm_data+1
WHEN event.trm_id = 9 THEN Aufteilen=event.trm_data
OTHERWISE NOP
END
END
IF event.trm_class = 'TRMS_ACTION' THEN DO
SELECT
WHEN event.trm_id = 10 THEN Do /*okay*/
Call Auslesen
if okay=1 then Call Schreiben
END
WHEN event.trm_id = 15 THEN Do /*speichern*/
Call Auslesen
If okay=1 then do
Call Open("prefs","s:FW_DBImport.prefs","W")
Writeln('prefs',Ausrichtung)
Writeln('prefs',TBreite)
Writeln('prefs',Editbreite)
Writeln('prefs',Staerke)
Writeln('prefs',Zbeschriftung)
Writeln('prefs',Trennung)
Writeln('prefs',Aufteilen)
Call Close("prefs")
Call Schreiben
End
END
WHEN event.trm_id = 20 THEN Do /*Abbrechen*/
Ausrichtung=oldAusrichtung
TBreite=oldTBreite
Staerke=oldStaerke
Zbeschriftung=oldZbeschriftung
EditBreite=oldEditBreite
Aufteilen=oldAufteilen
ende2=1
END
OTHERWISE NOP
END
END
END
END
CALL TR_CLOSEPROJECT(window2)
END
CALL TR_DELETEAPP(app2)
END
ELSE
CALL quit('Kann das Fenster nicht öffnen',10)
Return
TabBreitenkontrolle:
If TBreite=2 then do
Disi=0
address(FW)
GetPageSetup Width
PageBreite=result
GetSectionSetup Inside OutSide
DS=result
EditBreite=PageBreite-Word(DS,1)-Word(DS,2)
EditBreiteOrig=EditBreite
End
else disi=1
Return
Auslesen:
okay=0
address(FW)
GetPageSetup Width
PageBreite=result
GetSectionSetup Inside OutSide
DS=result
EditBreiteOrig=PageBreite-Word(DS,1)-Word(DS,2)
If Disi=1 then EditBreite=EditBreiteOrig
If Disi=0 then do
EditBreite = TR_GETATTRIBUTE(window2,4,'TROB_String')
Select
When (Datatype(EditBreite,'N')=0 | EditBreite="") then do
Call rtezrequest("Die Tabellenbreite bitte numerisch (.) angeben!","_Achso","Eingabe-Fehler","rt_pubscrname=FinalWriterPubScreen")
Call TR_SendMessage(window2,4,'TROM_ACTIVATE',0)
return
end
When Editbreite<0.64 then do
ShowMessage 1 1 '"Zu niedrige Breite!" "Eine Zelle muß mindestens 0.64cm breit sein." ""
"Okay" "" ""'
Call TR_SendMessage(window1,3,'TROM_ACTIVATE',0)
Return
End
When EditBreite>EditBreiteOrig then do
ShowMessage 1 1 '"Die Tabelle ist größer als der Editierbereich."
"Er beträgt nur: 'EditBreiteOrig' cm." ""
"Achso" "" ""'
Call TR_SETATTRIBUTE(window2,4,'TROB_String',EditBreiteOrig)
Call TR_SendMessage(window2,4,'TROM_ACTIVATE',0)
Return
End
Otherwise NOP
End
End
Trennung=TR_GETATTRIBUTE(window2,3,'TROB_String')
okay=1
Return
Schreiben:
If Aufteilen=0 then AufteilText="Nein"
else AufteilText="Ja"
o1="Datentrennung: "||Trennung||", Tabelle aufteilen: "||AufteilText
o2="Ausrichtung: "||Ausrichtung.Ausrichtung||", Breite: "||Editbreite||" cm"
o3="Umrahmung: "||Staerke.Staerke||", Beschriftung: "||Zbeschriftung.Zbeschriftung
Call TR_SETATTRIBUTE(window1,6,'TRAT_TEXT',o1)
Call TR_SETATTRIBUTE(window1,7,'TRAT_TEXT',o2)
Call TR_SETATTRIBUTE(window1,8,'TRAT_TEXT',o3)
ende2=1
Return
/*******************************************************************************
** Routine, die bei einer Unterbrechung des Scripts aufgerufen wird
*******************************************************************************/
SYNTAX:
CALL quit('Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)||R||SOURCELINE(sigl)||R||'Bitte informieren Sie den Autor...',20)
/*******************************************************************************
** Script beenden
*******************************************************************************/
quit:
PARSE ARG message,rcode
IF app ~= '00000000'x THEN DO
IF message ~= '' THEN
ret=rtezrequest(message,"_Okay","ACHTUNG!","rt_pubscrname=FinalWriterPubScreen")
CALL TR_DELETEAPP(app)
END
ELSE
IF message ~= '' THEN DO
SAY message
SAY
OPTIONS PROMPT 'Bitte <RETURN> drücken'
PULL taste
END
address command "flushtrx all"
EXIT(rcode)